import request from '@/utils/request'
import type { BaseResponse } from '@/types/common/response'
import type {
  Permission,
  AssignPermissionsRequest
} from '@/types/api/permission'

/**
 * 权限管理相关API
 */
export const permissionApi = {
  /**
   * 获取权限列表（管理员权限）
   */
  getPermissionList() {
    return request.get<BaseResponse<Permission[]>>('/permissions')
  },

  /**
   * 创建权限（管理员权限）
   * @param data 权限信息
   */
  createPermission(data: Omit<Permission, 'id' | 'createdAt' | 'updatedAt'>) {
    return request.post<BaseResponse<null>>('/permissions', data)
  },

  /**
   * 获取角色的权限列表（管理员权限）
   * @param roleId 角色ID
   */
  getRolePermissions(roleId: number) {
    return request.get<BaseResponse<Permission[]>>(`/roles/${roleId}/permissions`)
  },

  /**
   * 为角色分配权限（管理员权限）
   * @param roleId 角色ID
   * @param data 权限分配信息
   */
  assignPermissionsToRole(roleId: number, data: AssignPermissionsRequest) {
    return request.post<BaseResponse<null>>(`/roles/${roleId}/permissions`, data)
  },

  /**
   * 移除角色权限（管理员权限）
   * @param roleId 角色ID
   * @param permissionId 权限ID
   */
  removePermissionFromRole(roleId: number, permissionId: number) {
    return request.delete<BaseResponse<null>>(`/roles/${roleId}/permissions/${permissionId}`)
  }
}
